V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  q397064399  ›  全部回复第 98 页 / 共 118 页
回复总数  2341
1 ... 94  95  96  97  98  99  100  101  102  103 ... 118  
2016-11-28 10:51:22 +08:00
回复了 cyberdaemon 创建的主题 Android 上周末放弃原生 ROM 后改用国产 ROM,终于不会 7 小时没电了
@forest520 就算有统一,国内的公司的尿性 ,该恶心你的地方,绝对不会放过你
2016-11-28 10:49:27 +08:00
回复了 cyberdaemon 创建的主题 Android 上周末放弃原生 ROM 后改用国产 ROM,终于不会 7 小时没电了
Android 手机的痛,在于 流氓公司的 APP 与 手机电池的斗争,国内无论大厂 小厂,各种 APP 的下限,可以说几乎是没有的
2016-11-28 09:59:09 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
@neoblackcap
除开游戏行业以及嵌入式行业有特殊需求外( Java 需要在 mina netty 等 tcp 网络框架下自己玩之外
C++ C# 也有 tcp 网络框架)
目前绝大部分应用开发 无论是企业应用还是商业软件 基本上都是 http 为主流了吧,
移动 APP 基本上是 http ,自己写一套后台应用协议 估计还没上架 APP 公司就关门了
2016-11-28 09:51:14 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
@neoblackcap 不用 Java 难道拍簧片?
2016-11-27 22:52:23 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
@Allianzcortex
后端开发确实对 同步 IO/异步 IO 以及阻塞模型 做概念上的了解即可(因为通常 指的都是 HTTP 服务器后端业务开发),
跟服务端开发确实不是一个概念,因为绝大部分后端开发都是在成熟的框架下完成业务的编码

拿 J2EE 来讲, Servlet3.0 规范之前是没有异步的 IO ,都是阻塞,然后每一个 HTTP 请求对应一个
ServletRequest ,如果 Servlet 不返回信息,浏览器就会一直被阻塞,直到超时,而后端每一个请求对应一个线程
这样也可以简化开发,另外针对 HTTP 的无状态的特性,大大降低了程序员的心智负担,仅需要在数据库操作的 Service
层做事务跟并发同步 即可,其余的业务层 视图层都是针对单用户编写代码


Java 的反射并不是多难,理解反射的概念 有助于理解框架,要想程序逻辑清晰,得面向切面编程吧,把事务控制
日志记录 全向访问都通过 切面隔离开来,这样主线逻辑代码就会更清晰,这里就会用到 AOP


对象的管理,不能总 new 来 new 去,肯定要交给对象容器来管理,现在连 Android 都开始流行 依赖注入跟 AOP 了
直接用 @注解 +反射


而 AOP 以及依赖注入提出来比较晚,所以没有上 Gof 设计模式那本书,你看过 Head First 设计模式就知道 Java 结合反射 动态代理来实现对象的装饰


以前写 Android 是这样一个尿性


public xxxActivity extends Activity {


@Override
protected onCreate(){
xxxx;
xxxx;
findByView();
findByView();
findByView();
}

xxx = xxxObj.setOnClickListen(new onClickListen(){

})
}


现在呢?
直接注解,完事,然后交给框架去反射 装配我们的代码

@Activity(label = "@string/app_name")
@Layout(R.layout.main)
public class HelloTransfuse {

@Inject @View(R.id.textview)
TextView textView;

@Inject @Resource(R.string.hello)
String helloText;

@OnCreate
public void hello() {
textView.setText(helloText);
}
}
想想我们也知道,网络其实一层协议就能搞定,
为什么要分成这么多呢?
没有必要,分层本身的用意就是让来自不同领域的人以最低的学习成本来使用这个网络架构,
应用人员专注于应用协议,
开发人员专注于底层协议性能设计与优化,
提供给应用层的协议就两, TCP UDP ,作为应用开发,了解下 TCP 的重传 UDP 的丢包,以及两者的特性即可
对于网络协议底层实现,没有必要,也不需要去了解
2016-11-27 14:24:28 +08:00
回复了 neoblackcap 创建的主题 程序员 前端工程师应该掌握算法吗?
@amery2010
@huntzhan
所以我也在考虑是不是要报个九章算法班刷刷题了
2016-11-27 14:21:05 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
@neoblackcap 好的,尝试下
2016-11-27 06:35:55 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
@neoblackcap 这位仁兄要求并不高,本屌丝 菜鸟一枚 DNSProxy 初版代码,花了 2 天学习 Boost 的时间写的,

#include "stdafx.h"
#include <iostream>
#include <boost/asio.hpp>
#include <vector>
#include <boost/thread.hpp>
#include <boost/date_time.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/lambda.hpp>
using namespace std;
using namespace boost::asio;

int thread_count = 0;
boost::mutex mu;


void handle_request(ip::udp::endpoint & request_ep, vector<unsigned char> &buff, int bytes, ip::udp::socket *back_socket) {
mu.lock();
thread_count++;
mu.unlock();
io_service dns;
ip::udp::endpoint dns_server_ep(ip::address::from_string("223.5.5.5"), 53);
ip::udp::socket sock(dns, ip::udp::endpoint(ip::udp::v4(), 0));
sock.send_to(buffer(buff, bytes), dns_server_ep);
vector<unsigned char> data(2048, 0);

int nativeSocket = sock.native();
fd_set fileDescriptorSet;
struct timeval timeStruct;

// set the timeout to 30 seconds
timeStruct.tv_sec = 10;
timeStruct.tv_usec = 0;
FD_ZERO(&fileDescriptorSet);
FD_SET(nativeSocket, &fileDescriptorSet);
select(nativeSocket + 1, &fileDescriptorSet, NULL, NULL, &timeStruct);
if (!FD_ISSET(nativeSocket, &fileDescriptorSet)) { // timeout
std::string sMsg("TIMEOUT on read client data. Client IP: ");
sMsg.append(sock.remote_endpoint().address().to_string());
cout << sMsg << endl;
return;
}
int recv_bytes = sock.receive_from(buffer(data), dns_server_ep);
back_socket->send_to(buffer(data, recv_bytes), request_ep);
sock.close();
mu.lock();
thread_count--;
mu.unlock();
cout << "alive thread is :" + to_string(thread_count) << endl;
}


void handle_connections() {
io_service service;
ip::udp::socket sock(service, ip::udp::endpoint(ip::udp::v4(), 53));
while (true) {
ip::udp::endpoint sender_ep;
vector<unsigned char> buff(1024, 0);
int bytes = sock.receive_from(buffer(buff), sender_ep);
boost::thread m_thread(boost::bind(handle_request, sender_ep, buff, bytes, &sock));
m_thread.detach();
}
}



int main(int argc, char* argv[]) {
handle_connections();
}
2016-11-27 06:32:28 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
另外学框架 最好找个培训班录好的视频看, JavaEE 历史太悠久,有很多暗坑,自己踩起来 特辛苦
2016-11-27 06:30:26 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
Java 最重要的就是
反射 反射 反射 线程 线程 线程
重要的事情提三遍,只要你吃透了反射 线程,各种框架基本上就是手到擒来,
我以前不懂,吃了大亏,搞懂了反射 线程,你就可以去各种框架的源代码里面 大概摸一摸(不提倡细读代码)
对你学习框架的使用有很大的帮助
2016-11-27 06:19:25 +08:00
回复了 neoblackcap 创建的主题 程序员 前端工程师应该掌握算法吗?
@binux 点名告诉你这是哪本书,哪一章节,哪一页(后来牛逼吹大了,又把这句给删了)
2016-11-27 06:18:36 +08:00
回复了 neoblackcap 创建的主题 程序员 前端工程师应该掌握算法吗?
@binux 现场推有什么难的?
你要是刷过这个题,就像赵姐夫,人家直接可以在算法(第四版)上找到,
我也刷过这本书,推出来一个 O(N2 LogN)还是没问题的,因为这本书上 也只有 O ( N2 LogN )的解法
后面知乎上 轮子弄的那个算法我就不会了,彻底懵逼了,
2016-11-27 06:14:25 +08:00
回复了 binbinyouliiii 创建的主题 Java 一个合格的 java 实习生技能树要点到什么程度
@neoblackcap
echo server 并发为 10 貌似很 容易啊,
原生的 select 以及 posix 线程 api 就能搞定
2016-11-27 06:11:28 +08:00
回复了 SgtDaJim 创建的主题 C 请问为什么我这样使用 c 语言调用 shellcode 编译运行会出错。。
用 vc 吧, devc++是 mingw ,也就是 Linux 移植到 win 上的 gcc
很多不完善
2016-11-27 06:04:09 +08:00
回复了 neoblackcap 创建的主题 程序员 前端工程师应该掌握算法吗?
http://www.bilibili.com/video/av5063912/
这个视频再一次证明了,优秀的工程师,并不一定算法好,
真要到了这种需要写狗屎题的时候,请提前告知下我,让我好好准备下
2016-11-27 05:59:08 +08:00
回复了 neoblackcap 创建的主题 程序员 前端工程师应该掌握算法吗?
第一,首先打一遍楼上会写算法的人的脸,本人对算法持保留意见,
绝大部分搜索排序等算法只要知道其算法复杂度,与大致实现即可,需要的时候再去找
(这些算法比楼上发帖的各位年纪都要大,基本有针对各种应用场景的最优解)
面试算法的时候,应该多了解面试者的知识面,而不是针对某个具体的算法题,
你们前端大神 淘宝的 winter ,在职人节目上不就死在了最简单的 3sum ,
这个题目连我这种菜鸟都知道有 O(N3) O(N2 LogN)的解法,拿起书本来,我可以告诉你是哪一章节的题目,
小学生难度的狗屎题不也把 winter 这种大神给难倒了么

http://www.bilibili.com/video/av5063912/

以工程实践的角度来讲,算法如果有现成的细粒度并且合适的封装实现,
自己实现是找抽,我经常看到某些新手在 Java 里面写着蹩脚的二分查找实现,
先不说容易出错,而且扩展性极差,基本是跟具体的类型耦合在一起的,
大哥,查下 API 会死啊, Java Util 提供基于接口的二分最佳实现

第二,面试算法要看你这个程序员程序员的开发领域,
你一个前端天天跟人家扯啥动态规划干嘛,
简单点的动态规划,面试做出来了,不一定显得牛逼,
也许人家正好刷过这题,难一点的动态规划,人家面试 30 分钟, 20 分钟给你去思考这个递推公式了
我觉得最好问下前端工程师,重力加速度是多少,加速度计算公式,以及牛顿定律
做动画效果的时候倒是经常能用得上
2016-11-26 18:33:56 +08:00
回复了 pcatzj 创建的主题 Android Android 请问如何实现截屏功能?
上 github 找个成熟的,只要是用 /dev/下设备读的 就是全屏截图
2016-11-26 18:32:19 +08:00
回复了 pcatzj 创建的主题 Android Android 请问如何实现截屏功能?
不用 ADK 搞错了,很多年前,玩安卓的时候 收藏的,
1 ... 94  95  96  97  98  99  100  101  102  103 ... 118  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   986 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 18:56 · PVG 02:56 · LAX 11:56 · JFK 14:56
Developed with CodeLauncher
♥ Do have faith in what you're doing.