自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 问答 (6)
  • 收藏
  • 关注

原创 我想去美国。

这个念头几起几落,却一直不曾被抛弃。就算最后不去美国,努力备考TOFEL和GRE也算不错吧?也称得上是对能力的一种认可吧?不管结果怎样,至少奋斗一年看看!...

2018-12-14 15:03:42 637 1

原创 突然想写的人生感悟

我今年二十三岁,大学毕业一年有余。编程初成体系,数学一窍不通,健身小有所成,体力长足进步,英语懵懂初知,国史堪堪入门,地图倒背轮廓。在离开校园的第一年中,我有了很多以前不曾有过的感受,孤寂、冷漠、阳光、奋进等等不甚相同,甚至相反的情感在我的脸上交叉呈现。我开始思考人生,人生的目的为何?意义为何?乃至快乐为何这种看似在目前的我想来根本得不到答案的问题,我都一一想过了。然而就像我说的,我根本得...

2018-11-22 11:22:16 348

原创 关于锁的一点思考

无论是互斥量、信号量、对象锁、线程锁、进程锁等等,简略的说他们都一样,都是把某种东西锁住(抽象了),可能他们的级别不一样、使用的位置不一样。对于我使用过的语言,包括c++、java、python、c,语言体系不一样,但使用锁的思考可能殊途同归。c++/c:在多线程、多进程情况下,我会首先思考当前使用的对象/指针/方法,无论管它叫什么都好。它会在哪里(进程空间的位置),要去哪里,去了干什...

2018-11-22 11:14:39 222

原创 python线程池

觉得python的线程池库用着不要顺手,就按自己的意思改了改。去掉了poll方法,添加了线程池开始、返回结果队列等方法,结果队列的数据结构也改成了字典以下,代码# -*- coding:utf-8 -*-import threadingtry: import queueexcept ImportError: import Queue as queueclass Par...

2018-05-22 16:26:30 417

原创 python threadpool线程池源码分析

python的这个线程池库感觉不是很好用,用起来的感觉也不怎么好。# -*- coding: UTF-8 -*-__docformat__ = "restructuredtext en"__all__ = [ 'makeRequests', 'NoResultsPending', 'NoWorkersAvailable', 'ThreadPool', '...

2018-05-17 13:39:37 767

原创 用C写的json解析工具(逐步完善中)

首先是定义json结构和接口#ifndef CJSON_CJSON_H#define CJSON_CJSON_H#include <basetsd.h>typedef enum type{ STRING_1, OBJECT_1, BOOL_1, ARRAY_1, INTEGER_1, DOUBLE_1}Type;typedef struct cj

2017-09-24 22:22:12 450

原创 子序列求最大和

给一个数组,求子序列的最大和 开始是这样做的。 int maxSubArray(vector<int>& nums) { int len = nums.size(); int m = nums[0]; for (int i = 0; i < len; ++i) { dp[i][i] = nums[i];

2017-09-24 22:14:34 303

原创 分享一个方法:如何计算浮点数由多少位数字组成?

如何计算一个浮点数由多少数字组成? 想了好久,没想出答案,结果听门外者(完全不懂编程)说了一个思路,瞬间开朗。unsigned int getIntegerLength(long long l){ long long temp = 10l; unsigned int len = 1; while (l/temp != 0) { temp = tem

2017-09-03 20:44:54 980

原创 Webbench实现

// socket.cpp#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <string.h>#include <stdio.h>#include <stdlib.h>/* * 函数作用:连接指定的主机 */extern int my_so

2017-08-13 19:51:02 862 1

转载 socket编程中write、read和send、recv之间的区别

一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用。由此网络程序里最基本的函数就是read和write函数了。ssize_t write(int fd, const void*buf,size_t nbytes);write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,

2017-07-30 22:50:47 317

转载 程序员面经:面试前到底该不该刷题以及面试前该如何准备

原文作者:左潇龙原文链接:http://blog.csdn.net/zuoxiaolong8810/article/details/65441706引言    首先要说声抱歉,LZ前段时间刚入职,这几天一直在参加新人培训,每天到家都是晚上10点多,因此有关Java教程的文章和视频,只写了篇开头,没有按照计划进行后续Java教程相关的文章撰写和视频录制。不过4月2日晚8点,L

2017-07-22 18:51:52 366

转载 HTTP请求头详解

HTTP由两部分组成:请求和响应。当你在Web浏览器中输入一个URL时,浏览器将根据你的要求创建并发送请求,该请求包含所输入的URL以及一些与浏览器本身相关的信息。当服务器收到这个请求时将返回一个响应,该响应包括与该请求相关的信息以及位于指定URL(如果有的话)的数据。直到浏览器解析该响应并显示出网页(或其他资源)为止。HTTP请求HTTP请求的格式如下所示:[

2017-07-22 18:39:50 443

转载 TCP,IP,HTTP,SOCKET区别和联系

网络由下往上分为:        对应          物理层--                      数据链路层--网络层--                       IP协议传输层--                       TCP协议会话层--表示层和应用层--           HTTP协议socke

2017-07-21 21:33:12 343

原创 有坑点的面试题(关于运行栈和运行时常量池):2017.3.9

public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("1"); change(list); System.out.println(list.get(0)); } public static void

2017-03-09 20:32:16 317

原创 JAVA实现归并排序

package tree;import java.util.ArrayList;import java.util.List;/** * Created by rightHead on 2017/3/6. */public abstract class MergeSort<T> { private T[] result; public abstract boolean compa

2017-03-06 21:51:11 267

原创 JAVA实现平衡树

复习,上代码package tree;/** * Created by rightHead on 2017/3/4. */public abstract class BalanceTree<T> { private final class Node { T data; int equals; int deep; Node l

2017-03-05 14:50:45 702

原创 hihocoder 1353 满减优惠,背包

这题咋看上去,排个序取小的相加就完了,可是怎么可能会这么简单呢。所以排个序试了一下,结果WA了,嗯,想当然不可能这么简单。 对于这组数据: 8 20 4 5 4 5 4 5 4 5 最优解应该是5+5+5+5 = 20 才对,直觉反应这是dp,然后开始想状态转移方程,很快就脑补出了一个,挺麻烦的一个公式,不写了,写出来丢人,明显不对。我想的是dp[i][j]前i中

2016-09-25 12:18:34 679 1

原创 JAVAMail 使用imap协议分析邮件

准备内容这里仅以扣扣邮箱为例,首先,登录扣扣邮箱把imap协议开启,并记下授权码(这个过程,不会请百度),这个授权码是用来代替密码登陆的,注意:扣扣邮箱开启imap协议必须先设置独立密码。下载javamail的jar包填入工程中。注意事项应该用SSL登录,一般的方式登陆(http)会进不去,javamail把邮件分解成若干个结构(依次递归分析就可以了),这个代码理会详细展示。附代码:package

2016-08-30 14:04:41 1751

原创 Linux下定时执行JAVA程序

打成JAR包首先要把写好的JAVA程序封装成JAR包,注意选好主类,然后把该包和及其依赖的第三方jar包都上传到服务器上。 我的程序是每天凌晨定时更新一下数据库中的某价格,jar包在服务器上的路径如下:/usr/java/updatePrice/ModifyPrice.jar。编写shell脚本我的本本是windows,所以写shell脚本有些费劲。首先随便新建个文件,然后把后缀名改成.sh

2016-08-29 18:55:09 2692

原创 HorizontalScrollView实现右滑菜单与ListView左滑删除冲突解决(事件分发顺序)

首先解决这件事需要了解android的事件分发机制,和事件分发的顺序,如何计算view的坐标。计算坐标假设已掌握 ~(≧▽≦)/~事件分发机制假设已掌握 ~(≧▽≦)/~事件分发顺序点击或滑动事件摊派到了某个view(设为v),v如何知道这个事件它能否处理?答案是通过view的几个事件响应方法得知,这几个事件相应方法分别是onTouch、onTouchEvent、onLongClick、onClic

2016-05-26 20:07:18 1350

原创 java之强、软、弱、虚四大引用

强引用强引用就是普通的对象引用: String s = "string"; Integer i = new Integer(1);s和i都是一个强引用,强引用指向的对象GC无论如何都不会回收,它宁可抛出OOM(out of memory)。软引用软引用需要指明: String s = "string"; SoftReference soft

2016-05-20 22:27:32 387

原创 ListView滑动删除效果极简实现O(∩_∩)O哈哈~

无图无真相,上图。 图片太大了,截掉了点。 界面很简单,就两个view。咳咳首先,要想很容易的理解这部分的代码,应该熟悉android的消息派发机制(尤其是dispatchTouchEvent、onTouchEvent这两个方法),自顶向下树形分发,我转载的上一篇文章对此写的清楚明白,超级赞。<?xml version="1.0" encoding="utf-8"?><LinearLayo

2016-05-19 19:23:12 403

转载 Android:30分钟弄明白Touch事件分发机制

Touch事件分发中只有两个主角:ViewGroup和View。Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理。View在ViewGroup内,ViewGroup也可以在其他ViewGroup内,这时候把内部的ViewGroup当成View来分析。ViewGroup的相关事件有三个:onInterceptTouchEvent

2016-05-19 10:58:15 286

原创 java爬虫抓取网络上的图片

工具介绍jsoup 分析html文本的强大工具 httpclient java处理http请求的开源库代码已做注释,应该很容易就会看懂public class HTMLparser { private static final String category = "D:/JAVA/Projects/"; private final static String[] useragent

2016-05-17 22:46:07 2465 1

原创 fragment中弹出PopupWindow窗体,点击外界屏幕不消失问题解决

直接上代码 private void loadPopupWindow(){ Typeface iconfont = Typeface.createFromAsset(getActivity().getAssets(), "iconfont/iconfont.ttf"); Typeface iconfont1 = Typeface.createFromAsset(

2016-05-13 15:03:52 3545 1

原创 读书笔记JVM探秘之六:编译器的那些事儿

前期编译java源代码——>JVM字节码(class文件) 大致的编译过程: 解析与填充符号表——>注解处理——>分析与字节码生成 具体就是词法分析、语法分析、构建语法树等过程,此阶段几乎不会对代码做出优化,撑死就是做一些冗余处理,比如 int a = 3 + 1; 改成 int a = 4;等。 值得一说的是解语法糖的过程,java有大量的语法糖,泛型、自动装/拆箱、变长参数、foreac

2016-05-08 20:27:10 551

原创 字符串匹配:KMP算法之JAVA实现

前几天同学说让我写个字符串匹配,我就想到了KMP,学了下结论很简单,至于证明就没太细看了,结果写完人家说不用了、、、我想着不能白写。so,拍到博客上。 算法讲解:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 这里讲的简单易懂,反正我看完代码就写出来了。 然后代码附

2016-05-07 13:59:20 638

原创 方法重载的优先级

前几天,在书上看到了一段非常有意思的代码,如果面试的时候看这段代码绝逼蒙了,觉得有必要记下来,真的很有意思虽然没什么特别作用。 看代码:package test;import java.io.Serializable;import java.util.Comparator;/** * Created by Lee Y on 2016/5/6. */public class Overload

2016-05-06 17:35:47 596

原创 读书笔记JVM探秘之五:字节码执行引擎(重载+重写原理)

虚拟机是基于栈的体系结构,字节码执行依靠栈来操作。栈虚拟机中有两种栈,虚拟机栈(运行栈)和操作数栈,前者线程私有,作为运行方法的载体,以栈帧为单位;后者在栈帧中,每个栈帧带有一个操作数栈,作为执行字节码的载体。栈帧一个方法在运行栈中被表达成一个栈帧,栈顶帧为当前执行方法,它的大小在编译期就被完全确定(其他体系结构的栈帧也是这样的)。栈帧结构1、局部变量表,存储参数列表、局部(临时)变量,以slot为

2016-05-03 19:03:26 603

原创 读书笔记JVM探秘之四:类加载器

类加载器并不是JVM固定的一部分,之所以这么说是因为JVM内部有他们自己实现的类加载器,这表明:外部的类加载器是可以自定义的。对于JAVA来说,没有什么不可能,就算去写自己的VM也完全没问题。 类加载器是非常重要的一部分,它描述了class文件是如何进入虚拟机内存的,为此产生了哪些行为等一系列重要的问题。JAVA本身提供了三个类加载器,分别应对不同等级的类文件(比如说VM内部的类文件和你写的类文件

2016-04-22 19:30:24 338

原创 通过反射操作标识为包内访问权限的类

package reflecttest.li;class Test { private String as = "It's fucking reflecting too!"; public String bs = "Reflect please!"; protected String cs = "Wait for reflecting."; private void

2016-04-21 20:47:42 1055

原创 读书笔记JVM探秘之三:Class文件

什么是class文件恩,开始写。 众所周知,JAVA源文件会被编译成class文件,虚拟机运行的也是class文件。JVM从发布之初就一直贯彻的两个特性,其一,平台无关性,其二,语言无关性。 并不是只有java代码才可以被编译成class文件,仅仅只是虚拟机运行的是class文件,这不是因果关系。换言之,只要可以编译成class文件,任意语言都可以在虚拟机上运行(注意:理论上是这样的)。 cl

2016-04-18 22:18:21 391

原创 三个线程轮流输出ABC各十次(另附两个线程轮流循环若干次)

三个线程轮A,B,C,轮流输出ABC,顺序不可打乱,各十次。 我写了两种方法,第一种太慢了就写了第二种,没啥好说的直接上代码:package thread.li;/** * Created by Lee Y on 2016/4/6. * 三个线程轮番输出ABC */public class ThreadABC { public static void main(String[] a

2016-04-12 20:38:05 1375

原创 JAVA I/O读书笔记

关键字:流,字节,字符,通道,缓冲区,持久化,序列化,交互,标准I/O,压缩旧I/O包字节流读写,字符流读写(请先分清字节与字符的差别)。 区别:后者更快,但某些东西只能用字节读写(大概取决于它的数据存储方式) 区分:Reader、Wirter结尾是字符流,Stream是字节流。JAVA针对各种类型读写做有专用类,例如:File~ String~ Buffer~ 注意带缓冲的往往读写效率更快一些

2016-04-11 21:52:33 398

原创 JAVA容器效率分析表,很全面(List,Map,Set)

PS: Array as List是数组 这是手写的=。=,请不要吐槽。 以上数据仅供参考,摘于JAVA编程思想。

2016-04-07 20:37:49 469

原创 JAVA容器功能汇总(Map,Set)

以上摘自于JAVA编程思想。

2016-04-07 20:33:56 256

原创 C++实现之归并排序

说说思路归并排序实际上就是分治法,插句题外话,归并排序比快排、堆排序的实现难度微大。大体思路就是将待排数列分组,一分二二分四…….说白了就是把数列建成树,直到每个节点分不下为止(剩一个数,就不能再分了)。然后回溯,回溯的同时排序,也就是说,通过整个孩子节点的数列对父节点的数列进行排序,比如: 数列:3 1 9 7 建树如下 回溯的时候,从叶子节点开始,将左右孩子的数列按顺序合并(从小到大)

2016-04-05 21:23:51 1667

原创 堆排序(JAVA实现)

继上一篇,堆的实现,PS:上次的代码没有判断堆是否为空=。= 回归正题,无论是最大堆还是最小堆,只要一直取数,把堆取空,那么取出的数列一定是有序的(从大到小或从大到小),因此堆排序就是用待排的数据建个堆,然后不断取数,取到空,就好了。 上代码:import java.util.ArrayList;import java.util.List;import java.util.Vector;/*

2016-04-04 14:31:54 281

原创 二叉堆(JAVA实现)

定义二叉堆(简称堆,当然还有别的堆),是一种具有特定规则的树形结构,二叉堆规定:父节点的值必定大于(小于)其孩子节点,因此可以称其为最大堆(最小堆),堆是维护极值的非常快速的一种数据结构。实现思路堆一般都是数组实现的(不明白用数组怎么写树的,请自己脑补,很容易想的)。 拿最小堆来说,堆的根节点一定是最小的,堆只可以从根节点取值,所以堆的调整是最重要的工作。 比如对数列: 10 1 11 9 6

2016-04-04 13:18:43 745

原创 JAVA泛型擦除

泛型泛型,字面意思将一个类泛化,让它适应多种情况(包括未知情况),使其更具兼容性扩展性。public class HeapSort<T> { T item; public HeapSort(){ }}看代码,JAVA中的泛型定义和C++的很是类似,不过相比于C++泛型的强大,JAVA泛型却很是纠结。 因为目前,除了写数据结构之外,JAVA泛型几乎可有可无。这是因为JAVA的一

2016-04-03 13:32:38 483

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除