怎么在函数体内实现跳出函数保持函数传入的参数并且让另一个函数接替本函数返回值给主程序

怎么在函数体内实现跳出函数保持函数传入的参数并且让另一个函数接替本函数返回值给主程序?怎么实现这样的函数切换呢?

2个回答

你可以定义一个调度函数,让它实现你这两个函数的切换。

不能!
请自己开发一个 namedajipai Basic,你想怎么设计就怎么来。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
gridpanel添加按钮列和响应函数问题
[code="java"]{ header : 'hello', dataIndex : ' ', width : 100, renderer: createButton }[/code] [code="java"] function createButton(){ return "<input type='button' value='添加' onclick='addFn' >" ; // return "<button type='button' onclick='AddFn'>添加 </button>" ; } function addFn(){ alert('hello'); } [/code] [size=small][color=red]通过以上方法可以添加一列按钮,我想给按钮添加一个响应函数,用来弹出一个添加窗口,但按我代码中的这个方式提示addFn未定义,应该怎样添加响应函数呢?[/color][/size] [b]问题补充:[/b] [color=red][size=small]那几篇文章没怎么看明白,我想要的是通过点击这个添加按钮,弹出一个formpanel表单,并将按钮所在行的某一列的数据自动映射到表单的textfield中,怎么实现,代码应该怎么写?我想关键问题是2个,一是能响应函数,另一个是用什么方式传递参数,我不会。[/size][/color] [b]问题补充:[/b] [size=small][color=red]非常感谢你的热心解答,你的代码我试了,可以响应函数。我能不能将链接样式改为按钮的形式,应该怎么改,你的代码有些涉及html部分的语法不是很明白,不敢乱改。[/color][/size] [b]问题补充:[/b] [size=small][color=red]非常感谢你的指导。我再看看下面的参数传递问题怎么解决,有问题再请教。另外问一下,这个悬赏分怎么获得,快没分了,以后就没机会提问了啊。[/color][/size]
geolocation函数不能操作全局变量?
``` var geo_lat; var geo_lon; function showPosition(position) { geo_lat = position.coords.latitude; geo_lon = position.coords.longitude; } if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } alert(geo_lat); ``` 跳出的提示是undefined,但如果把alert放在showPosition函数里面,就能够正常显示坐标,请问到底为什么?如果我需要把函数中的坐标传递到其他的全局变量上,该怎么操作呢?谢谢!
angularJs的问题,困惑2天了,求解答!谢谢!
<script> angular.module("modelApp",["ionic"]) .controller("modelController", function ($scope,$http) { 这里面怎么调用到下面函数传入的str呢?? $scope.doRefresh = function() { } }); function doSome(str){ navigator.notification.alert("phoneGap中js的弹出框" ,null, str+"", "sssss"); 这里面怎么调用controller中的写的函数doRefresh()呢? } </script>
关于Ext.Ajax.request()
Ext.Ajax.request({ url : 'WebQQ2009/addFrient.do', params : { currentUser : currentUser }, success : function(response) { alert("success:"+response.responseText); Ext.MessageBox.alert("成功","添加好友成功"); Ext.getCmp("clientWindow").updateUserList(); }, failure : function(response) { alert("failure:"+response.responseText); Ext.Msg.show({ itle : '错误提示', msg : '添加失败!', icon : Ext.Msg.ERROR, buttons : Ext.Msg.OK }) } }) 上面的程序弹出对话框显示的值是:success:{'success':'false','message':'Failure'} 我就郁闷了。为什么返回的是'success':'false','message':'Failure',怎么是触发success函数,不是应该触发failure函数吗???谁能帮我解释下吗???? 用response.getWriter().write() 怎样才能让它触发failure函数 [b]问题补充:[/b] 在此先谢谢Snow_Young! 我想再问用response.getWriter().write() 是不是就只能传递一个值,如果我想让它返回几个参数能实现吗??? 或者帮我解释下response.getWriter().write("{'sucess':'false,'message':'Failure'}");中的"{'sucess':'false','message':'Failure'}"是什么意思,在JS里该怎样运用,或者说用response.responseText怎样去分析'sucess'是false还是true???????????????
C#编写一个一次性口令程序
(1) 编写一个一次性口令程序 (2) 运行该口令程序,屏幕上弹出一个仿Windows窗口,提示用户输入口令,并给出提示模式。 (3) 用户输入口令,按照一次性算法计算比较,符合,给出合法用户提示;否则给出非法用户提示。 (4) 再一次运行口令程序,如果输入与第一次同样的口令,系统应当拒绝,提示非法用户。每次提示和输入的口令都是不一样的。 (5) 写出设计说明(含公式、算法,随机数产生法,函数调用和参数传递方式)
mfc音乐播放器mcisendstring里面的,怎么实现顺序播放歌曲?
在musicdlg.h里面 protected: afx_msg LRESULT OnMCINotify(WPARAM wParam, LPARAM lParam); 在musicdlg.cpp里面 BEGIN_MESSAGE_MAP(CLrsfMusicDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_minbtn, &CLrsfMusicDlg::OnBnClickedminbtn) ON_BN_CLICKED(IDC_exitbtn, &CLrsfMusicDlg::OnBnClickedexitbtn) ON_WM_NCHITTEST() ON_BN_CLICKED(IDC_searchbtn, &CLrsfMusicDlg::OnBnClickedsearchbtn) ON_WM_CTLCOLOR() ON_BN_CLICKED(IDC_playbtn, &CLrsfMusicDlg::OnBnClickedplaybtn) ON_BN_CLICKED(IDC_stopbtn, &CLrsfMusicDlg::OnBnClickedstopbtn) ON_BN_CLICKED(IDC_lastbtn, &CLrsfMusicDlg::OnBnClickedlastbtn) ON_BN_CLICKED(IDC_nextbtn, &CLrsfMusicDlg::OnBnClickednextbtn) ON_LBN_DBLCLK(IDC_musiclist, &CLrsfMusicDlg::OnDblclkMusiclist) ON_WM_TIMER() ON_MESSAGE(MM_MCINOTIFY, OnMCINotify) //传递消息 END_MESSAGE_MAP() mcisendstring里面先open了,然后play play ="play.....+notify"; hwnd=this->m_hWnd; mciSendString(play, NULL, 0, hwnd); 响应函数 LRESULT CLrsfMusicDlg::OnMCINotify(WPARAM wParam, LPARAM lParam) { /*if (MCI_NOTIFY_SUCCESSFUL == wParam) { MessageBox(L"播放完毕",L"提示"); }*/ //MCI_NOTIFY_SUCCESSFUL == wParam MessageBox(L"播放完毕", L"提示"); return FALSE; } 可就是不弹出消息框啊! 不懂mfc消息传递机制,是哪里写错了
柱形/饼形图表插件打包问题
![图片说明](https://img-ask.csdn.net/upload/201901/14/1547456653_561476.png) 急急急!求组! 这里我在eclipse的项目里导入了三个包:gnujaxp、jcommon、jfreechart用来用监听来传递参数调用相应函数 来弹出图表窗口(ChartFrame) 这是其中一个 ![图片说明](https://img-ask.csdn.net/upload/201901/14/1547456949_750001.png)注意看右下有两个按钮。点击就弹出中间这个图表窗口。 我打包成可执行jar,会直接显示我的GUI界面,其他功能都正常,就是图表按钮点了没反应。怎么样才能让我的图表能够直接用这个jar上(而不是用代码)照常显示出来???? 我把jar反向Import到java里,发现是项目里的Referenced Libraries没了。 需要什么设置或者什么代码来自动配置路径或者获取资源吗??还是怎么做???有大佬吗??? 谢谢!!!
MFC对话框中菜单栏如何调用子程序(一直等。。)
背景:写了个程序是分步完成的。想把程序包装好看点 主要目的:1、 多个菜单栏分别调用新对话框进行分步运算 2、运算的值能否保留或传递 程序平台: VC2008或以上的对话框程序 注意不是单文档程序 具体描述: 程序基本写完,采用几个小的对话框模块软件完成,现在想包装集成一块 主要通过多个菜单栏调用小程序完成。 注意最好不要通过直接调用外部程序的方式实现。 因为我想提高程序的效率,如:模块A运算完的结果Pline[10000][5000]数据继续保存 模块B运算前就可以直接用Pline[10000][5000]数据。 **** 例: //主程序 void CXXXXDlg::OnBnClickedButton3() { // TODO: Add your control notification handler code here CString input; CString output; double Pline[10000][5000]; } // 菜单栏响应函数 Cmydlg为自定义的对话框类(也就是要调用的子程序对话框类) void CXXXXDlg::On32774() { // TODO: Add your command handler code here**** Cmydlg Fault1; Fault1.DoModal(); //这个函数只是弹出新的对话框 新对话框里面的button按钮根本点击不了 } // 菜单栏弹出对话框 button按钮代码 希望里面可以直接用主程序里面的一些变量值 void Cmydlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here CString input; CString output; double Pline[10000][5000]; } 因为对MFC消息处理方面知识不太懂,可能描述不太清楚,如有不清楚的地方我会及时说明 希望有高手可以解答!!!
VB调用C++编写的DLL,无报错但是自动弹出
小弟编写了一个C++的DLL,其头文件nihe.h如下: #include "stdafx.h" #define EXPORT _declspec(dllexport) extern "C" EXPORT void matching(double dGPSData[],unsigned int GPSCounts32,double dPlaneData[],unsigned int u32PlaneCounts,double R[], unsigned int u32Rcounts,double T[],unsigned int u32Tcounts,double K,bool bK,double GABC[],double Gxyz[]); 源文件nihe.cpp如下: #include "nihe.h" #include "stdafx.h" typedef void (*mat)(double dGPSData[],unsigned int GPSCounts32,double dPlaneData[], unsigned int u32PlaneCounts,double R[], unsigned int u32Rcounts,double T[],unsigned int u32Tcounts,double K,bool bK/*,double GABC[],double Gxyz[]*/); typedef void (*_mat)(double GABC[],double Gxyz[]); void matching(double dGPSData[],unsigned int GPSCounts32,double dPlaneData[], unsigned int u32PlaneCounts,double R[], unsigned int u32Rcounts,double T[],unsigned int u32Tcounts,double K,bool bK,double GABC[],double Gxyz[]) { HMODULE hMod =LoadLibrary("RT_Calculation.dll"); if(hMod!=NULL) { mat showinfo1; _mat showinfo2; showinfo1=(mat)GetProcAddress(hMod,"fnwMPS_MeasrNet_Get_R_T"); showinfo2=(_mat)GetProcAddress(hMod,"BFG54Parameter"); if(showinfo1 && showinfo2 ) { showinfo1(dGPSData, GPSCounts32, dPlaneData, u32PlaneCounts, R, u32Rcounts, T, u32Tcounts, K, bK); showinfo2(GABC, Gxyz); } } } 之后,我做了一个VB的调用文件,在VB模块里,调用DLL及其函数: Public Declare Sub matching Lib ".\nihe.dll" (ByRef dGPSData As Double, ByVal u32GPSCounts As UInteger, ByRef dPlaneData As Double, ByVal u32PlaneCounts As UInteger, ByRef R As Double, ByVal u32Rcounts As UInteger, ByRef T As Double, ByVal u32Tcounts As UInteger, ByRef K As Double, ByVal bK As Boolean, ByRef GABC As Double, ByRef Gxyz As Double) 然后做了一个按钮,期待吗如下: Dim dGPSData(8), GABC(5), Gxyz(2) As Double Dim u32GPSCounts As UInteger = 9 Dim dPlaneData(8) As Double Dim u32PlaneCounts As UInteger = 9 Dim R(8) As Double Dim u32Rcounts As UInteger = 9 Dim T(2) As Double Dim u32Tcounts As UInteger = 3 Dim K As Double = 1.0 Dim bK As Boolean = False dGPSData(0) = 1731.48 dGPSData(1) = 732.16 dGPSData(2) = 1082.66 dPlaneData(0) = 1590 dPlaneData(1) = 200 dPlaneData(2) = 1000 dGPSData(3) = -281.33 dGPSData(4) = 3798.74 dGPSData(5) = 1379.06 dPlaneData(3) = 468 dPlaneData(4) = 3690 dPlaneData(5) = 678 dGPSData(6) = 4936.98 dGPSData(7) = 4316.22 dGPSData(8) = 84.77 dPlaneData(6) = 5760 dPlaneData(7) = 2689 dPlaneData(8) = 270 matching(dGPSData(0), u32GPSCounts, dPlaneData(0), u32PlaneCounts, R(0), u32Rcounts, T(0), u32Tcounts, K, bK, GABC(0), Gxyz(0)) 'matched(GABC(0), Gxyz(0)) TextBox1.Text = R(0) TextBox2.Text = R(1) TextBox3.Text = R(2) TextBox4.Text = R(3) TextBox5.Text = R(4) TextBox6.Text = R(5) TextBox7.Text = R(6) TextBox8.Text = R(7) TextBox9.Text = R(8) TextBox10.Text = T(0) TextBox11.Text = T(1) TextBox12.Text = T(2) TextBox13.Text = GABC(0) TextBox14.Text = GABC(1) TextBox15.Text = GABC(2) TextBox16.Text = GABC(3) TextBox17.Text = GABC(4) TextBox18.Text = GABC(5) TextBox19.Text = Gxyz(0) TextBox20.Text = Gxyz(1) TextBox21.Text = Gxyz(2) 启动调用程序之后,每次一点按钮,就自动弹出但也没报错。大神们能不能帮帮小弟看看到底哪里有问题啊,我总觉得是参数传递出了问题但是又找不到哪里出错了
java定时器超时后关闭socket出现socket closed 异常的问题
package my.start; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Timer; import java.util.TimerTask; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; //创建AutoStart类,让他实现ServletContextListener(服务程序上下文监听器)接口 //实现ServletContextListener接口需要重写contextDestroyed()和contextInitialized()两个方法 //记得要在web.xml文件中加入 // <listener> // <listener-class>my.test.AutoStart</listener-class> // </listener> //这样,tomcat在启动时,就会同时调用该接口的contextInitialized()方法 //在contextInitialized()方法中,开启一个线程,用soket监听一个端口,从而实现TCP通信 public class AutoStart extends HttpServlet{ private static final long serialVersionUID = 1L; private int soketPort = 9014;//要监听的服务器端口,可以根据需要进行修改 @Override public void init() throws ServletException { // TODO Auto-generated method stub super.init(); new MyThread().start();//创建一个MyThread线程对象,并启动线程 System.out.println("开启监听线程"); } //创建MyThread类,继承Thread方法 class MyThread extends Thread { //重写Thread类的run()方法,用来实现MyThread线程的功能 public void run() { //System.out.println("测试开始"); try { ServerSocket ss = new ServerSocket(soketPort); System.out.println("监听到"+(soketPort+"")+"端口"); while(true){ //System.out.println("已经创建soket"); //ss对象的accept()方法可以监听指定端口有没有TCP连接 //在没有TCP连接之前程序将阻塞在这里 Socket socket = ss.accept(); System.out.println("有客户端接入"); //监听到指定端口有TCP连接后,创建soket对象,程序不再堵塞,往下执行 //创建一个线程,去监听客户端通过TCP发来的数据 Thread sockThread=new SocketTherad(socket); //启动线程 sockThread.start(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } int timeNum; class SocketTherad extends Thread{ //继承Thread类来创建线程 Socket socket; InputStream is; OutputStream os; boolean run_flag=true;//控制run()函数是否继续运行标志位 Timer heartBeatTimer = new Timer(); //心跳包定时器 private void startHeartBeatThread() { TimerTask heartBeatTask = new TimerTask() { public void run() { timeNum++; System.out.println("timerNum="+(timeNum+"")); if(timeNum==2){//超时则关闭socket连接及定时器 try { is.close(); os.close();//关闭输出流 socket.close();//关闭soket run_flag=false;//跳出死循环 System.out.println("TCP连接断开"); heartBeatTimer.cancel();//关闭定时器 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; heartBeatTimer.schedule(heartBeatTask, 10*1000, 10*1000); } public SocketTherad(Socket socket) { this.socket = socket;//传递过来的soket参数赋予给socket对象 } public void run() {//run()函数用来实现线程要完成的任务 startHeartBeatThread(); while(run_flag) { try { String str = null; is = socket.getInputStream();//获取输入流 os=socket.getOutputStream(); byte[] buffer = new byte[200];//数据缓冲区; int length=0; length = is.read(buffer);//读取接收到的数据流长度 if(length != (-1)){//不是-1,说明读取到有效的数据 str = new String(buffer,0,length);//输入流转换成str字符串 System.out.print("收到数据:"); System.out.println(str); } else if(length == (-1)){//接收到数据长度为-1,说明客户端主动关闭了TCP连接 is.close();//关闭输入流 os.close();//关闭输出流 socket.close();//关闭soket run_flag=false;//跳出死循环 System.out.println("TCP连接断开"); } buffer = null; System.gc();//垃圾回收 } catch (IOException e) { e.printStackTrace(); } } } } } ``` ```
通过Handler实现Service和Activity的数据交互,与onbind返回Binder对象冲突,我该如何解决?
在做service和activity通讯,需要服务能够控制活动的运行,同时能够实时进行数据传输 我通过Handler实现Service和Activity的数据交互,但尴尬的是onBind已经用于传递BleBind的一个实例了,没办法return messenger.getBinder(); ``` package com.example.bluserver; import android.app.Service; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.Context; import android.content.Intent; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.Messenger; import android.util.Log; import android.widget.TextView; import android.widget.Toast; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.UUID; public class bluService extends Service { public static final int MSG = 123; private static final String TAG = "BleService"; private BluetoothAdapter mBA; private Context mContext; private final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//这是蓝牙透传的uuid // 这里本身即是服务端也是客户端,需要如下类 private BluetoothSocket mSocket; private BluetoothDevice mOldDevice; private BluetoothDevice mCurDevice; // 输出流_客户端需要往服务端输出 private OutputStream os; private Messenger mActivityMessenger; private BleBinder bleBinder=new BleBinder(); @Override public IBinder onBind(Intent intent) { Messenger messenger=new Messenger(handler); //return messenger.getBinder();//Handler实现Service和Activity的数据交互 return bleBinder;//返回BleBinder实例供活动调用 } class BleBinder extends Binder{//以下是以供调用的公共方法 //开始读取传感器数据 public void startread(){ { new Thread(new Runnable() { @Override public void run() { try { Log.d(TAG,"开始运行run()函数"); InputStream is = mSocket.getInputStream(); Log.d(TAG,"已获取输入流"); while (true) { synchronized (this) { //Log.d(TAG,"已获取锁"); //Thread.sleep(50); byte[] tt = new byte[is.available()]; if (tt.length > 0) { is.read(tt, 0, tt.length); Message msg = new Message(); msg.obj = new String(tt, "GBK"); //大概在这里要获取整个字符串,字符串以回车分割,如此才能准确识别 Log.e(TAG, "客户端:" + msg.obj); showToast("客户端:" + msg.obj); mActivityMessenger.send(msg); //handler.sendMessage(msg); } } } } catch (Exception e) { e.printStackTrace(); } } }).start(); } } public void stopread(){}//停止读取传感器数据 /** * 弹出Toast窗口 * * @param message */ private void showToast(String message) { if (mContext != null) { Toast.makeText(mContext, message, Toast.LENGTH_LONG).show(); } else { Log.e(TAG, "message:" + message); } } /** * 主动连接蓝牙 * * @param device */ public void connectDevice(BluetoothDevice device) { // 判断是否在搜索,如果在搜索,就取消搜索 if (mBA.isDiscovering()) { mBA.cancelDiscovery(); } try { // 获得远程设备 Log.e(TAG, "开始检索"); if (mCurDevice == null || mCurDevice != mOldDevice) { mCurDevice = mBA.getRemoteDevice(device.getAddress()); Log.e(TAG, device.getAddress()); mOldDevice = mCurDevice; Log.e(TAG, "device:" + mCurDevice); mSocket = mCurDevice.createRfcommSocketToServiceRecord(MY_UUID); // 连接 mSocket.connect(); // 获得输出流 os = mSocket.getOutputStream(); Log.e(TAG, "获取输入流"); startread(); Log.e(TAG, "开启读线程"); //intent流转byte数组 // byte[] input=ByteToInputStream.input2byte(mSocket.getInputStream()); // Intent intent=new Intent(); // intent.putExtra("inputstream",input); // mContext.startActivity(intent); } // 如果成功获得输出流 Log.e(TAG, "3"); } catch (IOException e) { e.printStackTrace(); } } /** * 判断是否打开蓝牙 * * @return */ public boolean isEnabled() { if (mBA.isEnabled()) { return true; } return false; } /** * 传输数据 * * @param message */ public void write(String message) { try { if (os != null) { os.write(message.getBytes("GBK")); } Log.e(TAG, "write:" + message); } catch (IOException e) { e.printStackTrace(); } } public BluetoothDevice getCurDevice() { return mCurDevice; } } public bluService() { mBA = BluetoothAdapter.getDefaultAdapter(); } private Handler handler = new Handler() { public void handleMessage(Message msg) { //Toast.makeText(this,String.valueOf(msg.obj),Toast.LENGTH_LONG); //将在此处向主线程发送信息,用于更新界面(已废弃) //将在此处处理来自活动的消息,发送消息在线程内 // 参考代码 https://blog.csdn.net/CodeNoodles/article/details/51679532 switch (msg.what){ case MSG: mActivityMessenger = msg.replyTo; break; } Log.e(TAG, "服务端:" + msg.obj); super.handleMessage(msg); } }; @Override public void onDestroy() { Log.d(TAG,"服务已销毁"); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG,"服务已启动"); return super.onStartCommand(intent, flags, startId); } @Override public void onCreate() { super.onCreate(); Log.d(TAG,"服务已创建"); } } ```
为什么在MFC中使用线程会出现程序崩溃?是我实用的方法不敌还是怎么回事?
在使用MFC中使用的线程是 API函数,调用CreateThread(); 可是使用的时候调试一步一步走都是正常的,但是一起运行就发现程序崩溃。我是一个初学的菜鸟,可能是代码有点乱,麻烦看一下!!! 谢谢各位大佬: ``` // UDPserver.cpp : 实现文件 // #include "stdafx.h" #include "ServerUDP.h" #include "UDPserver.h" #include <Winsock2.h>//加裁头文件 #include <stdio.h>//加载标准输入输出头文件 #define IDP_SOCKETS_INIT_FAILED 103 SOCKET m_revSocket; // CUDPserver CUDPserver::CUDPserver() { } CUDPserver::~CUDPserver() { } // CUDPserver 成员函数 // Server 成员函数 bool CUDPserver::Socket()//初始化 { //初始化Winscok if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return 1; } // SetSockOpt(); WORD wVersionRequested;//版本号 WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的套接字 err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return false; }//加载套接字库,加裁失败则返回 if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return false; }//如果不是1.1的则退出 return true; } #include"Set_up.h" CSet_up up; bool CUDPserver::GetLocalAddress(){ CString strAddress; int nCardNo = 1; //PIP_ADAPTER_INFO结构体指针存储本机网卡信息 PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO(); //得到结构体大小,用于GetAdaptersInfo参数 unsigned long stSize = sizeof(IP_ADAPTER_INFO); //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量 int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize); //记录网卡数量 int netCardNum = 0; //记录每张网卡上的IP地址数量 int IPnumPerNetCard = 0; if (ERROR_BUFFER_OVERFLOW == nRel) { //如果函数返回的是ERROR_BUFFER_OVERFLOW //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小 //这也是说明为什么stSize既是一个输入量也是一个输出量 //释放原来的内存空间 delete pIpAdapterInfo; //重新申请内存空间用来存储所有网卡信息 pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize]; //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量 nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize); } if (ERROR_SUCCESS == nRel) { //输出网卡信息 //可能有多网卡,因此通过循环去判断 while (pIpAdapterInfo) { //可能网卡有多IP,因此通过循环去判断 IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList); switch(pIpAdapterInfo->Type) { case MIB_IF_TYPE_OTHER: case MIB_IF_TYPE_ETHERNET: case MIB_IF_TYPE_TOKENRING: case MIB_IF_TYPE_FDDI: case MIB_IF_TYPE_PPP: case MIB_IF_TYPE_LOOPBACK: case MIB_IF_TYPE_SLIP: { strAddress = pIpAddrString->IpAddress.String; // 需要注意的是有时可能获取的IP地址是0.0.0.0,这时需要过滤掉 if(CString("0.0.0.0")==strAddress) break; // std::cout<<_T("第")<< nCardNo<<_T("张网卡的IP地址是")<< strAddress<<std::endl; // long PID = _ttol(strAddress); //CString 转成 char*,该语句缺一不 // mxcj.m_strIP = (DWORD)PID; // 再强制转换成DWORD m_DIP= strAddress; nCardNo++; break; } default: // 未知类型网卡就跳出 break; } pIpAdapterInfo = pIpAdapterInfo->Next; } } //释放内存空间 if (pIpAdapterInfo) { delete pIpAdapterInfo; } //initsocket();//创建套接字 return true; } bool CUDPserver::initsocket() { /*创建套接字*/ //AF_INET表示IPv4,SOCK_STREAM数据传输方式,IPPROTO_TCP传输协议; m_listenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (m_listenSocket == INVALID_SOCKET) { //printf("套接字创建失败"); WSACleanup(); return 0; } Bind(); return true; } bool CUDPserver::Bind()// 绑定地址端口 { sockaddr_in addrListen; addrListen.sin_family = AF_INET; //指定IP格式 addrListen.sin_port = htons(m_iDKH); //绑定端口号 addrListen.sin_addr.S_un.S_addr = INADDR_ANY; //表示任何IP service.sin_addr.s_addr = inet_addr("127.0.0.1"); if (bind(m_listenSocket, (SOCKADDR*)&addrListen, sizeof(addrListen)) == SOCKET_ERROR) //(SOCKADDR*) { //printf("绑定失败"); closesocket(m_listenSocket); return 0; } Connect(); //连接开始监听 return true; } unsigned int WINAPI ThreadProFunc(void *pParam); bool CUDPserver::Connect() //连接 { /*开始监听*/ if (listen(m_listenSocket, 5) == SOCKET_ERROR) { //printf("监听出错"); closesocket(m_listenSocket); return 0; } /*等待连接,连接后建立一个新的套接字*/ //SOCKET revSocket; //对应此时所建立连接的套接字的句柄 //HANDLE hThread; // DWORD dwThreadId; //sockaddr_in remoteAddr; //接收连接到服务器上的地址信息 //int remoteAddrLen = sizeof(remoteAddr); //printf("等待连接...\n"); /*等待客户端请求,服务器接收请求*/ //m_revSocket = accept(m_listenSocket, (SOCKADDR*)&remoteAddr, &remoteAddrLen); //等待客户端接入,直到有客户端连接上来为止 /*if (m_revSocket == INVALID_SOCKET) { closesocket(m_listenSocket); WSACleanup(); return 0; } else { /* 启动等待连接线程 */ HANDLE acceptThread = CreateThread(NULL, 0, WaitAcceptThread, (LPVOID)m_listenSocket, 0, NULL); WaitForSingleObject(acceptThread, INFINITE); // 等待线程结束 // return 0; //} return true; } unsigned int WINAPI ThreadProFunc(void *pParam) { CUDPserver server; server.Receive(); char revData[255] = ""; while(1){ /*通过建立的连接进行通信*/ int res = recv(server.m_revSocket, revData, 255, 0); if (res > 0) { //printf("Bytes received: %d\n", res); // server.m_wndOutputBuild.AddString(_T("调试输出正显示在此处。")); //printf("客户端发送的数据: %s\n", revData); return 0; } //sleep(1000); return 0; } } UINT __cdecl CUDPserver::hellothread(LPVOID lparam){ CUDPserver server; server.Receive(); char revData[255] = ""; while(1){ /*通过建立的连接进行通信*/ int res = recv(server.m_revSocket, revData, 255, 0); if (res > 0) { //printf("Bytes received: %d\n", res); // server.m_wndOutputBuild.AddString(_T("调试输出正显示在此处。")); //printf("客户端发送的数据: %s\n", revData); return 0; } //sleep(1000); return 0; } } HANDLE bufferMutex; DWORD WINAPI WaitAcceptThread(LPVOID IpParameter) { SOCKET m_socket = (SOCKET)IpParameter; // int rval; sockaddr_in remoteAddr; //接收连接到服务器上的地址信息 int remoteAddrLen = sizeof(remoteAddr); while(true){ /*等待客户端请求,服务器接收请求*/ m_revSocket = accept(m_socket, (SOCKADDR*)&remoteAddr, &remoteAddrLen); //等待客户端接入,直到有客户端连接上来为止 if (m_revSocket == INVALID_SOCKET) { //printf("客户端发出请求,服务器接收请求失败:\n",WSAGetLastError()); closesocket(m_revSocket); WSACleanup(); return 0; } HANDLE receiveThread = CreateThread(NULL, 0, RecMsgThread, (LPVOID)m_revSocket, 0, NULL); WaitForSingleObject(bufferMutex, INFINITE); if(NULL == receiveThread) { //printf("\nCreatThread AnswerThread() failed.\n"); return 0; } ReleaseSemaphore(bufferMutex, 1, NULL); } } DWORD WINAPI RecMsgThread(LPVOID IpParameter) { SOCKET ClientSocket=(SOCKET)(LPVOID)IpParameter; int rval; while(1) { char recvBuf[1024]; rval = recv(ClientSocket, recvBuf, 1024, 0); WaitForSingleObject(bufferMutex, INFINITE); if (rval == SOCKET_ERROR) { // printf("ONE Client Exit\n"); // vector<SOCKET>::iterator result = find(clientSocketGroup.begin(), clientSocketGroup.end(), ClientSocket); // clientSocketGroup.erase(result); // for (map<SOCKET, string>::iterator i=m_ipSocket.begin(); i!=m_ipSocket.end(); i++) // { // if (i->first == ClientSocket) // { // printf("%s下线\n",m_ipSocket[ClientSocket].c_str()); // m_ipSocket.erase(i); // break; // } // } closesocket(ClientSocket); ReleaseSemaphore(bufferMutex, 1, NULL); break; } recvBuf; if(recvBuf[0] == -113){ if(recvBuf[0]== -1){ return 0; } } // printf("%s Says: %s\n", m_ipSocket[ClientSocket].c_str(), recvBuf); // 接收信息 Sleep(1000); ReleaseSemaphore(bufferMutex, 1, NULL); } return 0; } ```
关于鼠标全局HOOK的问题
**问题:**本来要编写一个获取系统空闲时间的DLL,但当安装鼠标全局钩子后,每当弹出窗口、或按下键盘win键、alt键等这些情况时,鼠标钩子的(WM MOUSEMOVE)消息就会响应,这是经过多次测试才锁定在这个消息上,非常奇怪这个情况,请大神们给予指导解惑 **简单列一下部分相关代码:** // 全局变量 #pragma data_seg ("mkHook") HHOOK g_hMyFreeMouse = NULL; DWORD g_dFreeMouse = 0; #pragma data_seg () // 设置鼠标钩子 void SetMouseHook() { if (!g_hMyFreeMouse) { g_dFreeMouse=GetTickCount(); g_hMyFreeMouse = SetWindowsHookEx(WH_MOUSE, MouseProc, GetModuleHandle("mkHook"), NULL); } } // 鼠标HOOK回调函数 LRESULT CALLBACK MouseProc(int code ,WPARAM wParam, LPARAM lParam) { if(wParam == WM_MOUSEMOVE) { g_dFreeMouse=GetTickCount(); **// 这就是问题所在,没有鼠标操作,也能执行这行代码** } return CallNextHookEx(g_hMyFreeMouse, code, wParam, lParam); // 继续传递 } // 卸载鼠标HOOK void DestroyMouseHook() { if (g_hMyFreeMouse) { g_dFreeMouse=0; UnhookWindowsHookEx(g_hMyFreeMouse); g_hMyFreeMouse=NULL; } }
javascript生成的树形目录如何把读取的id传递给jsp页面
我用js读取数据库生成一个树形目录,树形目录做好了,可是不知道怎么把节点的id传到jsp页面或action里,最好action能通过request.getAttribute()得到所点节点的id,还有就是不知道如何像有些论坛上一个,点不同的节点,右面显示不同的jsp,小弟第一次做,请指教,谢谢,下面是我用的js代码: var Tree = new function() { this._url = "tree.jsp"; //用于请求数据的服务器页面地址 this._openMark = "<img src='images/nolines_minus.gif'/>"+"<img src='images/folderopen.gif'/>"; //目录节点处于展开状态时的标识 this._closeMark = "<img src='images/nolines_plus.gif'/>"+"<img src='images/folder.gif'/>"; //目录节点处于关闭状态时的标识 this._itemMark = "<img src='images/page.gif'/>"; //非目录节点标识 this._initId = "treeInit"; //树形目录初始div标识 this._rootData = "IS安全等级保护基础库"; //根节点文字信息 this._boxSuffix = "_childrenBox"; //子节点容器后缀 this._folderType = "folder"; //目录节点类型变量 this._itemType = "item"; //非目录节点类型变量 //初始化根节点 this.init = function() { var initNode = document.getElementById(this._initId); //获取初始div var _node = document.createElement("div"); //创建新div作为根节点 _node.id = "1"; //根节点id为0 _node.innerHTML = this.createItemHTML(_node.id, this._folderType, this._rootData); initNode.appendChild(_node); //将根节点加入初始div } //获取给定节点的子节点 this.getChildren = function(_parentId) { //获取页面子节点容器box var childBox = document.getElementById(_parentId + this._boxSuffix); //如果子节点容器已存在则直接设置显示状态,否则从服务器获取子节点信息 if (childBox) { var isHidden = (childBox.style.display == "none"); //判断当前状态是否隐藏 childBox.style.display = isHidden?"":"none"; //隐藏则显示,如果显示则变为隐藏 //根据子节点的显示状态修改父节点标识 var _parentNode = document.getElementById(_parentId); _parentNode.firstChild.innerHTML = isHidden?this._openMark:this._closeMark; } else { var xmlHttp=this.createXmlHttp(); //创建XmlHttpRequest对象 xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { //调用addChildren函数生成子节点 Tree.addChildren(_parentId, xmlHttp.responseXML); } } xmlHttp.open("GET", this._url + "?parentId=" + _parentId, true); xmlHttp.send(null); } } //根据获取的xmlTree信息,设置指定节点的子节点 this.addChildren = function(_parentId, _data) { var _parentNode = document.getElementById(_parentId); //获取父节点 _parentNode.firstChild.innerHTML = this._openMark; //设置节点前标记为目录展开形式 var _nodeBox = document.createElement("div"); //创建一个容器,称为box,用于存放所有子节点 _nodeBox.id = _parentId + this._boxSuffix; //容器的id规则为:在父节点id后加固定后缀 _nodeBox.className = "box"; //样式名称为box,div.box样式会对此节点生效 _parentNode.appendChild(_nodeBox); //将子节点box放入父节点中 var _children = _data.getElementsByTagName("tree")[0].childNodes; //获取所有item节点 var _child = null; //声明_child变量用于保存每个子节点 var _childType = null; //声明_childType变量用于保存每个子节点类型 for(var i=0; i<_children.length; i++) { //循环创建每个子节点 _child = _children[i]; _node = document.createElement("div"); //每个节点对应一个新div _node.id = _child.getAttribute("id"); //节点的id值就是获取数据中的id属性值 _childType = _child.getAttribute("isFolder")=="true"?this._folderType:this._itemType; //设置子节点类型 //根据节点类型不同,调用createItemHTML创建节点内容 if (_childType == this._itemType) { //非目录节点在最后多传一个link数据,用于点击后链接到新页面 _node.innerHTML = this.createItemHTML(_node.id, _childType, _child.firstChild.data, _child.getAttribute("link")); } else { //目录节点只需传递id,节点类型,节点数据 _node.innerHTML = this.createItemHTML(_node.id, _childType, _child.firstChild.data); } _nodeBox.appendChild(_node); //将创建好的节点加入子节点box中 } } //创建节点的页面片断 this.createItemHTML = function(itemId, itemType, itemData, itemLink) { //根据节点类型不同,返回不同的HTML片断 if (itemType == this._itemType) { //非目录节点的class属性以item开头,并且onclick事件调用Tree.clickItem函数 return '<span class="itemMark">'+this._itemMark+'</span>' + '<a href="Frame.do" style="text-decoration:none" target="main"><span class="item" >' +itemData+'</span></a>'; } else if (itemType == this._folderType) { //目录节点的class属性以folder开头,并且onclick事件调用Tree.getChildren函数 return '<span class="folderMark" onclick="Tree.getChildren(\'' + itemId + '\')">' + this._closeMark + '</span>' + '<span class="folder" onclick="Tree.getChildren(\'' + itemId + '\')">' + itemData + '</span>' } } //点击叶子节点后的动作,目前只是弹出对话框,可修改为链接到具体的页面 this.clickItem = function(_link) { return ; } //用于创建XMLHttpRequest对象 this.createXmlHttp=function() { var xmlHttp = null; //根据window.XMLHttpRequest对象是否存在使用不同的创建方式 if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); //FireFox、Opera等浏览器支持的创建方式 } else { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式 } return xmlHttp; } }
如何向ext的TabPanel的html页面传参?
下面是一个函数弹出一个窗口有都多个TabPanel [code="java"] function playmessagemusic(name) { // alert("playmessagemusic start:"); // alert("name is:"+name); // alert("play src_m:" + src); if (win != null) { win.close(); win = null; } win = new Ext.Window({ title : '消息报警', width : 300, height : 300, // modal:true, closeAction : 'close', items : new Ext.TabPanel({ activeTab : 0,// 当前标签为第1个tab(从0开始索引) border : false, items : [{ title : "报警音乐", html : '<div id="hotMessageShow" height="100% style="padding:0px 0px 0px 0px;border:1px dashed #000000;text-align: left;color: red;font-size: 15px;">' + musicObj }, { title : "报警信息", html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="'+ src_m + '"></iframe>' }, { title : "报警规则", html : '<h>24小时内节点的首条未处理消息的时间已超过5分钟</h>' }] // TabPanel中的标签页,以后再深入讨论 }) }); var v =name+"消息报警" win.setTitle(v); win.show(); } [/code] 如何将name函数的值传到报警信息的html页面来,最终通过页面传到页面加载的js文件的ajax的action那? [b]问题补充:[/b] to yourname:不用frame用其它也可以呀,只要解决问题 [b]问题补充:[/b] to lovewhzlq:iframe的src是一个html页面链接,传不了参的呀 [b]问题补充:[/b] to lovewhzlq:你这种方式是可以传参,可以还是无法把参数传递到页面加载时执行的js文件的方法里,可以举例看看吗
H5微信支付接口调用出现fail问题
代码如下 ``` <script type="text/javascript"> var timestamp = Date.parse(new Date());//当前时间戳 var nonceStr=randomString(10);//随机字符串10 var stringSignTemp="appid=wxd0030975ff3fb970&nonceStr="+nonceStr+"&signType=MD5&package=prepay_id=zzcc888com&timeStamp="+timestamp+"&key=3d3d43eff711172a774101a26ae1b16b"; var sign=hex_md5(stringSignTemp).toUpperCase();//签名 function onBridgeReady(){ //按钮函数 WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":"wxd0030975ff3fb970", //公众号名称,由商户传入 "timeStamp":timestamp, //时间戳,自1970年以来的秒数 "nonceStr":nonceStr, //随机串 "package":"prepay_id=zzcc888com", "signType":"MD5", //微信签名方式: "paySign": sign //微信签名 }, function(res){ if(res.err_msg == "get_brand_wcpay_request:ok" ) { alert(666); }else{ alert(res.err_msg); } // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 } ); } if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); } }else{ onBridgeReady(); } function randomString(len) {   len = len || 32;   var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';   var maxPos = $chars.length;   var pwd = '';   for (i = 0; i < len; i++) {     pwd += $chars.charAt(Math.floor(Math.random() * maxPos));   }   return pwd; } </script> ``` 微信浏览器触发之后弹出微信支付,紧接着出现"get_brand_wcpay_request:fail" 求大神指教,白名单和权限目录已经添加。
前台异步进行请求,后台执行完逻辑得到的对象以JSON的形式返回给前台,前台获取不到
后台代码:![图片说明](https://img-ask.csdn.net/upload/201708/10/1502362827_819448.png) 相关类:![图片说明](https://img-ask.csdn.net/upload/201708/10/1502363025_898892.png) ![图片说明](https://img-ask.csdn.net/upload/201708/10/1502362898_412267.png) ![图片说明](https://img-ask.csdn.net/upload/201708/10/1502362917_753543.png) 前台代码:![图片说明](https://img-ask.csdn.net/upload/201708/10/1502363066_765006.png) 执行后,后台都已经拿到对象了,数据库到已经更新了,得到的数据如下: SeckillResult{success=true, data=SeckillExecution{seckillId=1003, state=1, stateInfo='秒杀成功', successKilled=SuccessKilled{seckillId=1003, userPhone=13285689356, state=0, createTime=Thu Aug 10 18:15:44 CST 2017, seckill=Seckill{seckillId=1003, name='500元秒杀华为p8', number=97, startTime=Thu Aug 10 00:00:00 CST 2017, endTime=Fri Aug 11 00:00:00 CST 2017, createTime=Thu Aug 03 21:30:18 CST 2017}}}, error='null'} 然后以json的形式传递给前台,前台回调函数里面的弹框都出不来。 前面有一个相似的异步请求可以返正常回,代码如下: ![图片说明](https://img-ask.csdn.net/upload/201708/10/1502363287_959774.png) ![图片说明](https://img-ask.csdn.net/upload/201708/10/1502363301_897258.png) 跪求大神帮忙看一看
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
C++(数据结构与算法):62---搜索树(二叉搜索树、索引二叉搜索树)
一、搜索树的复杂度分析 本文考察二叉搜索树和索引二叉搜索树 二叉搜索树的渐进性能可以和跳表媲美: 查找、插入、删除操作所需的平均时间为Θ(logn) 查找、插入、删除操作的最坏情况的时间为Θ(n) 元素按升序输出时所需时间为Θ(n) 虽然在最坏情况下的查找、插入、删除操作,散列表和二叉搜索树的时间性能相同,但是散列表在最好的情况下具有超级性能Θ(1) 不过,对于一个指定的关键...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
立即提问