技术文章

https遇到自签名证书/信任证书

好久不见. 提交于 2021-02-19 02:50:10
对于CA机构颁发的证书Okhttp默认支持 可以直接访问 但是对于 自定义 的证书就不可以了(如:https : //kyfw.12306.cn/otn/ ), 需要加入Trust 下面分两部分来写,一是信任所有证书,二是信任指定证书,访问自签名的网站 一、信任所有证书 1. 在你的module 下 build.gradule里添加 dependencies { 、、、 compile 'com.zhy:okhttputils:2.6.2' 、、、} 2.新建MyApplication public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // 这就是信任所有证书 HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null,null, null); OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10000L, TimeUnit.MILLISECONDS) .readTimeout(10000L, TimeUnit.MILLISECONDS)

MMORPG游戏的人工智能(AI)和行为树设计

久未见 提交于 2021-02-19 02:43:51
  文 / alchemistli    什么是MMORPG的AI?   玩MMORPG的地球人都知道,MMORPG的AI实在是弱智的要死。即使是在WOW这样顶级的游戏中,AI也是有限得掉渣,绝大部分NPC都像一个木桩一样,哪怕是精心设计的BOSS也就只有一些战斗AI。尽管有很多人把动画,或者自动寻路之类的功能也叫做AI,但是我们并不讨论这种基本功能。我们讨论的AI是指,可以使得NPC好像一个真人一样活动的AI。拥有这样AI的NPC看起来就不再是那个只有血条和攻击力的模型,而给玩家的感受会是一个有信念、欲望和意图的生命。从更广泛的意义上说,如果整个游戏世界是“高AI”的,那么这个游戏世界会充满着自由度。这意味着玩家可以在游戏中“创造”出前所未有的武器、科技甚至会有能力改变整个游戏世界外貌和文明。如果真正出现这样一款MMORPG,那么赢得粉丝们的惊声尖叫应该并不意外。品管中心孕育中的项目“失落的大陆”目前就正在向这个方向努力中,希望能够取得一定水准的突破。    AI系统   一个典型的AI系统包括,感知,导航和决策三个字系统。对于游戏来说,感知系统是可以“作弊”的,不需要NPC去“感知”世界,系统可以直接告诉NPC世界是怎样的。而导航系统,不属于今天的讨论范围。而决策系统才是让NPC看起来可以有自己的意图和信念,所以我们接下来主要讨论一下决策系统。    AI决策系统的常见模型  

Pkg.go.dev新设计来了!!

可紊 提交于 2021-02-19 02:43:33
自启动pkg.go.dev以来,我们收到了很多有关设计和可用性的反馈。 特别是在浏览网站时信息的组织方式使用户感到困惑。 今天,我们很高兴分享一个重新设计的pkg.go.dev,我们希望它会更清晰,更有用。 这篇博客文章重点介绍。 有关详细信息,请参阅 Go问题41585 。 所有路径的登陆页始终保持一致 主要的变化是pkg.go.dev/ <path>页面已经围绕路径的概念进行了重组。 路径表示模块特定版本中的目录。 现在,无论该目录中包含什么内容,每个路径页面都将具有相同的布局,使体验始终一致且可预测。 如果目录里面存在 README ,则路径页面将在会自动渲染。 以前在概述选项卡仅在模块根目录下的 README才会显示 。 这个改动是为了将最重要的信息放在首位而进行的众多更改之一。 文档导航 文档部分现在显示索引以及sidenav。 这使他们能够查看完整的程序包API,同时在浏览文档部分时具有上下文。 左侧导航栏中还有一个新的跳转到输入框,用于搜索标识符。 有关 文档部分中的更改的详细信息, 请参见 Go问题41587 。 主页上的元数据 现在,每个页面的顶部栏显示其他元数据,例如每个程序包的“引用”和“被引用”计数。 还显示有关模块的最新次要和主要版本的信息。 有关 详细信息, 请参见 Go问题41588 。 视频演练 上周,在 Google Open Source

Tomcat7 catalina.out 日志分割

半世苍凉 提交于 2021-02-19 02:43:06
1. 安装cronolog工具 yum install cronolog which cronolog which cronolog确认安装位置,我的是/usr/sbin/cronolog 2. 修改catalina.sh配置 (1) 370行左右,注释掉 #touch "$CATALINA_OUT" (2) 383 392行左右 将: org.apache.catalina.startup.Bootstrap "$@" start \ >> "$CATALINA_OUT" 2>&1 "&" 修改为: org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \ |/usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.out>> /dev/null & 3. 重启tomcat即可。 相关编辑位置内容: shift #touch "$CATALINA_OUT" if [ "$1" = "-security" ] ; then if [ $have_tty -eq 1 ]; then echo "Using Security Manager" fi shift eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING

GIT学习笔记(2):时光机穿梭与远程仓库

走远了吗. 提交于 2021-02-19 02:42:55
GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 GIT如何跟踪修改   在我们 修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制 。我们前面举的例子是这样的,git add将文件加入暂存区(菜篮子),git commit一并提交到版本库(柜台结账)。如果我们想拿其他的菜,但是不加入篮子,Git是无法对其进行跟踪的。   比如我们队Test.java第一次修改后,执行git add命令将第一次修改版本加入了暂存区,然后又修改了Test.java,但是commit负责暂存区的修改提交了,所以第二次的修改不会被提交。      那我们该如何将第二次修改的内容提交呢?将其加入暂存区即可。add命令是将目标文件加入跟踪列表,每一次跟踪以commit为 准,也就是说你只要没有commit,不管你什么时候把这个文件add进去,最终结果是你文件最后一次修改的结果 。    说明: 简而言之,如果不用git add到暂存区,那就不会随commit提交到版本库。 撤销修改   修改最后一次提交   有时候我们提交完了才发现 漏掉了几个文件没有加,或者提交信息写错 了。想要 撤消刚才的提交操作,可以使用 --amend 选项重新提交 :   比如我们提交后,发现忘添加MyClass.java文件了,我们可以把git add MyClass.java

力扣213——打家劫舍 II

跟風遠走 提交于 2021-02-19 02:42:31
这一篇是上一篇的扩展,需要针对特殊情况特殊考虑,当然其本质还是动态规划。 <!-- more --> 原题 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [2,3,2] 输出: 3 解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。 示例 2: 输入: [1,2,3,1] 输出: 4 解释: 你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。   偷窃到的最高金额 = 1 + 3 = 4 。 原题url: https://leetcode-cn.com/problems/house-robber-ii/ 解题 这道题的变化是,同样是一个数组,但是首尾相连了,也就是成了一个环,那么原本递推的方式也就行不通了,因为任何一个节点其实地位都相等了,也就找不到最初的状态,无法进行递推了。 但我们可以将现在的问题转化成我们已经解决的问题,仔细想想。所谓的首尾相连,针对状态进行划分,可以有三种情况:

3.Shell 接收用户的参数

左心房为你撑大大i 提交于 2021-02-19 02:41:15
1.Shell 传递参数   我们可以在执行 Shell 脚本时,向脚本传递参数,Linux系统中的Shell脚本语言已经内设了用于接收参数的变量,变量之间可以使用空格间隔。   例如$0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值, 而$1、$2、$3……则分别对应着第N个位置的参数值,如图4-15所示 尝试编写一个脚本程序示例: [root@linuxprobe ~]# vim example. sh # !/bin/ bash echo " 当前脚本名称为$0 " echo " 总共有$#个参数,分别是$*。 " echo " 第1个参数为$1,第5个为$5。 " [root@linuxprobe ~]# sh example. sh one two three four five six 当前脚本名称为example. sh 总共有6个参数,分别是one two three four five six。 第1个参数为one,第5个为five。 $* 与 $@ 区别: 相同点:都是引用所有参数。 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)

那些年我看过的前端书

懵懂的女人 提交于 2021-02-19 02:40:11
面试时,考官问我都看过哪些前端的书,当时竟一时想不起来几本,抽个时间整理一下: 一、Javascript方面的书籍: 1 JavaScript权威指南(第6版):号称javascript圣经,前端必备;前端程序员学习核心JavaScript语言和由Web浏览器定义的JavaScript API的指南和综合参考手册; 2 JavaScript高级程序设计(第3版) :前端必备书,如果你想真正进入前端世界,这是一本不可多得的进阶书,没什么好说的,必须细细品读; 3 JavaScript语言精粹 :这是一本值得任何正在或准备从事JavaScript开发的人阅读,并且需要反复阅读的js书籍; 4 基于MVC的JavaScript Web富应用开发 :这不是一本适合初学者看的书籍,更适合具有一定前端开发经验的从业人员看的框架书,如果你想构建一个复杂的前端应用,你会如获至宝; 5 JavaScript DOM编程艺术(第2版):好书主要是dom操作和兼容方面的知识,值得一看; 6 JavaScript经典实例 :可以看看,主要是有关javascript一些典型小工具,有些剖析的并不深入,总体来说可以看看; 7 JavaScript设计模式 :写js不难。如何编写优美、结构化和可维护的代码呢?反复的揣摩这本书吧; 8 JavaScript编程精解 : 了解一下可以; 9 JavaScript模式

[LeetCode] 803. Bricks Falling When Hit 打击砖块掉落

拥有回忆 提交于 2021-02-19 02:39:33
We have a grid of 1s and 0s; the 1s in a cell represent bricks. A brick will not drop if and only if it is directly connected to the top of the grid, or at least one of its (4-way) adjacent bricks will not drop. We will do some erasures sequentially. Each time we want to do the erasure at the location (i, j), the brick (if it exists) on that location will disappear, and then some other bricks may drop because of that erasure. Return an array representing the number of bricks that will drop after each erasure in sequence. Example 1: Input: grid = [[1,0,0,0],[1,1,1,0]] hits = [[1,0]] Output: [2]

什么是见解、如何实现算法见解?| Mixlab智能可视化系列

徘徊边缘 提交于 2021-02-19 02:39:12
人群迁徙的可视化,图自google 智能可视化 是最近我最近查阅了许多 微软亚洲研究院 的文章和论文后,个人蛮喜欢的一个方向。 用户向机器下达指令, 机器根据分析场景和上下文推测人类分析的目的, 自动理解、智能分析并主动用可视化的方式呈现给用户。 各种技术通过组合后,产生了一种新的人机交互体验。 - 人机协同 服装产品的销售量是多少? 当你在 Excel 中输入这个问题,Excel 将立即“意会”,把“服装”分类下不同产品的销售量数据,以 可视化图表 的方式呈现在你眼前。 在新技术落地过程中,必须处理好 技术与产品 之间的关系。 具体包括: 站在用户和产品的角度思考,保证目标用户最常见的查询需求都能够得到满足。 产品对技术的准确率有着极高的要求,当用户问一个问题,机器自动给出的回答必须有很高的准确率,否则会误导用户的决策,带来极大的损失。 定义技术在产品中的边界,并让用户理解它的适用范围。 回到本文的重点: 算法见解 本文通过研究 Power BI Desktop的insight功能, 回答了 什么是见解、算法见解如何实现等问题。 - 什么是insight 举一个UI设计上的例子 如果我们表述为: 增加社交计数可将转化率提高, 这一观点,其实算不上insight。因为没有上升到规律的层面。 我们换一个角度描述: 由于羊群效应,在我们的心理深处,其他人的行为具有自然的吸引力